import json
import logging
from typing import Any, List

from llama_index.core.base.llms.types import ChatMessage, MessageRole
from sqlalchemy.orm import Session

from app.db.session import get_db, db_action
from app.models.log import OpenaiLog
from app.utils.json_utils import json_encoders_deep
from sks.agent.CallbackHandler import OpenAICallbackHandler
from sks.agent.settings import Settings


def on_reqeust_event(
                     body: Any = "",
                     url: str = "",
                     chat_id: int = None,
                     **kwargs: Any,
                     ) -> str:

    body_str=body
    openai_log = OpenaiLog(request_body=body_str, url=url, chat_id=chat_id)
    openai_log.response_body=None


    def _db_action(db):
        db.add(openai_log)
        db.commit()
        db.refresh(openai_log)


    db_action(_db_action)


messages:List[ChatMessage]=[
    ChatMessage(role=MessageRole.SYSTEM, content="你是助手"),
]
chat_id=1
# on_reqeust_event(body='asus',chat_id=None)
openai_log_id = Settings.openai_callback_handler.on_reqeust_event(body=messages, url="", chat_id=chat_id)
Settings.openai_callback_handler.on_response_event(body="abcaskdfsak", id=openai_log_id)

# print('"Transcript so far: user: 广州大学\n\nassistant: 广州大学是一所位于中国广东省广州市的高等学府。它以培养高素质人才、开展科学研究和提供社会服务为宗旨。请问您需要了解广州大学的哪些具体信息？我目前可以帮您计算两个数字的乘积，但关于广州大学的信息，我需要进一步的指示来提供帮助。如果您有关于数学计算的问题，欢迎随时提问。\n\nuser: 浙江大学\n\nassistant: 浙江大学是一所位于中国浙江省杭州市的顶尖高等学府之一，它是中国“985工程”和“211工程”的重点建设高校，也是世界知名的研究型大学。浙大以其卓越的教学质量、前沿的科学研究和活跃的国际交流而闻名。\n\n如果您有关于浙江大学的具体问题或者需要帮助的地方，请告诉我。不过，目前我的主要功能是帮助您计算两个数字的乘积。如果有数学计算的需求，欢迎您提问！\n\nuser: Current state:\n{\'research_notes\': {}, \'report_content\': \'Not written yet.\', \'review\': \'Review required.\'}\n\nCurrent message:\n哪个更好?\n\n\n"\n\n' )